Linuxで無線LANしててし(^-^)
debian GNU/Linuxで無線LANしてしててし(^-^)
さてあんまり長くなったんでボツにしたメモですが、そのまんまにするのも何なんで端折って書いてみよう。まあそれでも長くなりそうで、あらかじめ
ごめんなさい。
(Googleで調べても案外WEPの暗号の設定あたりは情報が少なかったんで...誰かのお役にたてればいいなぁなどど妄想ぎみ)
まずは状況から
ASUS WL-100で説明します(/etc/pcmcia/*.conf のカードの特定の以外は全部おんなじでGW-NS11Sも動きました)
### pcmcia-modules の orinoco_cs ドライバで一応動いたが... ###
まずは、まっとうに pcmcia-modulesのパッケージを使おうとしました。
が、普段使っているLinuxのカーネルがデビアンのパッケージにまだ無いやつなんで、当然対応するコンパイルずみのpcmcia-modulesは無い。
まずは pcmcia-source 3.1.33 のソースコードいれてモジュールをコンパイルして入れてみることに。
しかし、
/lib/modules/2.4.20/kernel/ 以下にカーネル付属のpcmciaモジュール
/lib/modules/2.4.20/pcmcia/ 以下にpcmcia-source のモジュール
がダブって入ってしまった。
むうカーネルコンフィグでなんとかできるんだろうが、面倒になってカーネル付属のモジュール消しました。(+_+;;; もちろんバックアップはとりましたが...。
それと
$ apt-get install wireless-tool
と打ってwireless-toolという無線LAN用のユーティリティをインストールしときました。
さて設定。
◯/etc/network/interfaces
auto lo iface lo inet loopback iface eth0 inet static address 192.168.xxx.xxx netmask 255.255.xxx.xxx network 192.168.xxx.xxx broadcast 192.168.xxx.xxx gateway 192.168.xxx.xxx
|
インターフェースの名前とIPアドレスの割り当てを書いておく。 DHCPの場合もここにそれなりの設定をしておけば良かったはず。
|
◯/etc/pcmcia/wireless.opts
の無線LANの設定を編集します。
~前略~ # NOTE : Remove the following four lines to activate the samples below # --------- START SECTION TO REMOVE ----------- #*,*,*,*) # ;; # ---------- END SECTION TO REMOVE ------------ ~中略~ # ASUS WL-100 (ryuton add) *,*,*,xx:xx:xx:xx:xx:xx) INFO="ASUS WL-100" ESSID="xxx" MODE="auto" CHANNEL="x" RATE="auto" KEY="xxxx-xxxx-xx" ;; # Generic example (decribe all possible settings) *,*,*,*) ~後略~
|
という設定をしました。
・ *,*,*,xx:xx:xx:xx:xx:xx) のxx:xx:xx:xx:xx:xxは使うカードのMACアドレスです。 無線LANのカードが二枚あったんで実はこのあとにGW-NS11Sカードの設定も書いてます。 まあ複数のカード別に設定を変えるつもりで無ければここは *,*,*,*) にして 全てのカードにマッチさせてもOKかと。
・ ESSID="xxx" はアクセスポイントに設定したESSIDと同じものを指定します。
・ CHANNEL="x" にはアクセスポイントにつながるチャンネルを設定。
・ KEY="xxxx-xxxx-xx" にはWEPのためのキーを書きます。 これを指定すると無線での通信が暗号化されます。 もちろんアクセスポイントに設定したキーと同じものを指定します。
|
◯/etc/pcmcia/config-2.4とか/etc/pcmcia/*.confのファイル
これらにカードと使うモジュールの設定があれば何もしなくてもこのままで上手くいくはず。
無かったらカードを挿して
$ /sbin/cardctl ident
とすると
Socket 0:
no product info available
Socket 1:
product info: "ASUS", "802_11b_PC_CARD_25", "Version 01.00", ""
manfid: 0x02aa, 0x0002
function: 6 (network)
などとカードの中から情報がかえってきます。
んで、 /etc/pcmcia/xxx.conf というファイルを作って調べたカードの情報とモジュールの対応を書きました。
(ファイル名は最後が .conf になってれば何でもいいです。デビアンウッディの/etc/pcmcia/config-2.4では最後のほうにそれらを読み込むのが書いてあったので)
/etc/pcmcia/xxx.confの中身は
card "ryuton)ASUS WL-100 802.11b WLAN PC Card" version "ASUS", "802_11b_PC_CARD_25", "Version 01.00", "" manfid 0x02aa, 0x0002 bind "orinoco_cs"
|
card の"ryuton)なんたら"って所は自分で適当に分かりやすいカード名をつけといて下さい。 version や manfid はどちらか一方だけでもいいです。 ここで指定したカードを bind で orinoco_cs.o モジュールに関連づけます。
|
これで動きます。
$ /etc/init.d/pcmcia restart
とコマンド打ってPCMCIAのサービスを再起動させて、WL-100カードを挿します。
$ lsmod
で見るとちゃんと orinoco_cs.o がロードされてます。
$ iwconfig
と打つと通信中のアクセスポイントのMACアドレスやらリンククオリティやらが出てきます。
無線LAN越しに通信してることを
$ ping xxxx
なんかでチェックしてみると、一応使える様にはなったみたいです。
がしかし、orinoco_cs使うとネットワークがむちゃくちゃ遅い。
むうう...。
$ tail -f /var/log/syslog
でメッセージを見ていると、
kernel: eth0: Tx error, status 4 (FID=xxxx)
のようなエラーが大量に出ています。あららら。
googleでこのエラーメッセージを打ち込んで調べてみると、どうもカードによっては起こる事らしい。
こういう時は linux-wlan-ng のprismドライバのモジュール使えって事らしい...。
ここでWL-100のドライバCDを見てみるとちゃんと linux-wlan-ng 0.1.14 がはいってました。
しおしおしお。(;_;)
機械のマニュアルやドライバCDの中身はちゃんと見ておきましょう...。
### linux-wlan-ng の prism2_cs を使って上手くいった事 ###
linux-wlan-ngの0.2.0のtar.gz落してきて展開してREADMEファイルのとおりにインストールしました。
$make config
(カーネルやpcmcia-csなどのソースコードのパスなどを聞いてきます)
$make all
$make install
っす。
(debian test版の sargeに linux-wlan-ng があるんでそれのソースを入れる手もある)
◯/etc/network/interfaces
一応eth0の設定を残してインターフェース名 wlan0 のエントリを作りました。
iface wlan0 inet static address 192.168.xxx.xxx netmask 255.255.xxx.xxx network 192.168.xxx.xxx broadcast 192.168.xxx.xxx gateway 192.168.xxx.xxx
|
◯/etc/pcmcia/xxx.conf(または/etc/pcmcia/config*とか/etc/pcmcia/*.conf)
device "prism2_cs" class "wlan-ng" module "prism2_cs" card "ryu)ASUS WL-100 802.11b WLAN PC Card" version "ASUS", "802_11b_PC_CARD_25", "Version 01.00", "" manfid 0x02aa, 0x0002 bind "prism2_cs" # bind "orinoco_cs"
|
wl-100に prism2_cs モジュールを使うように修正。 device には prism2_cs を使う時に/etc/pcmcia/の wlan-ng スクリプトが走るような設定いれときました。 /etc/pcmcia/wlan-ng.conf とかに同じ manfid や version の行があったら 有難くそれを使うか、参考にしてコメントアウトとするかです。 今回は色々実験しながらなのでコメントアウトにしときました。
|
◯/etc/wlan/
以下ににlinux-wlan-ngの設定を書きます。linux-wlan-ngのREADMEにあるとおり。
/etc/wlan/wlan.conf
にESSのIDを書きます。最後の方に
SSID_wlan0="YourESSID" ENABLE_wlan0=y
|
とYourESSIDの所にアクセスポイントと同じESSIDを書きます。
でサンプルのwlancfg-DEFAULTファイルをwlancfg-YourESSIDとしてコピーして、
/etc/wlan/wlancfg-YourESSID
というようなファイルを作って、設定を書きます。WEPの指定も入れてこんな感じです。
#=======USER MIB SETTINGS============================= # You can add the assignments for various MIB items # of your choosing to this variable, separated by # whitespace. The wlan-ng script will then set each one. # Just uncomment the variable and set the assignments # the way you want them. #USER_MIBS="p2CnfRoamingMode=1 p2CnfShortPreamble=mixed" #=======WEP=========================================== # [Dis/En]able WEP. Settings only matter if PrivacyInvoked is true lnxreq_hostWEPEncrypt=false # true|false lnxreq_hostWEPDecrypt=fales # true|false dot11PrivacyInvoked=true # true|false dot11WEPDefaultKeyID=0 # 0|1|2|3 dot11ExcludeUnencrypted=true # in AP this means WEP is required. # If PRIV_GENSTR is not empty, use PRIV_GENTSTR to generate # keys (just a convenience) PRIV_GENERATOR=/sbin/nwepgen # nwepgen, Neesus compatible PRIV_KEY128=false # keylength to generate PRIV_GENSTR="" # or set them explicitly. Set genstr or keys, not both. dot11WEPDefaultKey0=xx:xx:xx:xx:xx # format: xx:xx:xx:xx:xx or #dot11WEPDefaultKey1= # xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx #dot11WEPDefaultKey2= # e.g. 01:20:03:40:05 or #dot11WEPDefaultKey3= # 01:02:03:04:05:06:07:08:09:0a:0b:0c:0d #=======SELECT STATION MODE=================== IS_ADHOC=n # y|n, y - adhoc, n - infrastructure #======= INFRASTRUCTURE STATION =================== # What kind of authentication? AuthType="opensystem" # opensystem | sharedkey (requires WEP) #======= ADHOC STATION ============================ BCNINT=100 # Beacon interval (in Kus) CHANNEL=x # DS channel for BSS (1-14, depends # on regulatory domain) BASICRATES="2 4" # Rates for mgmt&ctl frames (in 500Kb/s) OPRATES="2 4 11 22" # Supported rates in BSS (in 500Kb/s)
|
・ dot11WEPDefaultKey0=xx:xx:xx:xx:xx にはアクセスポイントと同じ暗号キーを書きます。
・ CHANNEL=x にはアクセスポイントと通信するチャンネルを指定。
|
これで
$ /etc/init.d/pcmcia restart
として WL-100カード を挿せばアクセスポイントと通信できるはずです。
が実は、ここでprism2_csモジュールをロードしようとしてエラーが出ました。
CardServices release does not match!
orinoco_cs.oを作った時にカーネル同梱のとpcmcia-csのとがダブってできてしまったのが原因か?
ちょっとタバコで一服して、「えーい面倒だ!」
linux-wlan-ngのソースコードのうちの prism2sta.c のその部分のエラーチェックを
if ( serv.Revision != CS_RELEASE_CODE )
{
printk(KERN_NOTICE"%s: CardServices release does not match!n", dev_info);
/*this line ryuton remove
return -1;
*/
}
とエラー終了するところをコメントアウトしてしのぎました。
危険なのでお勧めはしません。
本当はカーネルコンパイルの時にカードサービスがダブらない方法を探した方がいいとは思うんですが、コンフィグでpcmciaをNにするとmake-kpkgでモジュール作る時にpcmciaのモジュールが出来なかった。
むういまいち調べがつかん。今度はちゃんとしよう。(^_^;;
こんどはちゃんと動きました。
さてこれでキッチンに置いてあるノートから線が一つ無くなりました。(^-~)
ま馬鹿といえば馬鹿ですね...。
ちょうどその頃にスラシュドットjpの記事でSWSUSPを知りました。いいなぁこれ。時間があったら試してみたい...むうう時間があったらね(;_;)
ホント長くてごめん。m(-_-)m
2003/07/29